//导入vue
import Vue from 'vue'
//导入vuex
import Vuex from 'vuex'
//使用vuex
Vue.use(Vuex)
//创建vuex

import user from './modules/user'
import setting from './modules/setting'
const store = new Vuex.Store({
  modules:{
    user,
    setting
  },
  // state 状态, 即数据, 类似于vue组件中的data,
  // 区别：
  // 1.data 是组件自己的数据, 
  // 2.state 中的数据整个vue项目的组件都能访问到
  strict: true, //开启严格模式
  state: {
    count: 100,
    list:[1,2,3,4,5,6,7,8,9,10]
  },
  getters:{
    filterList(state){
      return state.list.filter((itme)=>itme>5)
    }
  },
  mutations: {
    // 方法里参数 第一个参数是当前store的state属性
    // payload 载荷 运输参数 调用mutaiions的时候 可以传递参数 传递载荷

    //count+1
    addCount(state) {
      state.count++
    },
    //count + value
    addCountValue(state, value) {
      console.log(value);
      state.count += value
    },
    //改变count
    changeCount(state, value) {
      state.count = +value
    }
  },
  actions: {
    setAsyncCount(context, value) {
      setTimeout(() => {
        context.commit('changeCount', value)
      }, 1000);
    }
  }
})
//导出vuex仓库
export default store